home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-12 / timebm10.zip / TIMEBOMB.DOC < prev    next >
Text File  |  1992-03-13  |  51KB  |  1,131 lines

  1.           TIMEBOMB.EXE (against time-bombs and memory resident virus)
  2.                         =======            ===
  3.  
  4.           version 1.0 (c) copy right 1992 All Rights Reserved
  5.           no edition date.
  6.  
  7.           You bought a data base from a respected dealer, but on Friday
  8.           the 7, it deleted your files:  Unknown to the dealer, the 
  9.           software was sold to someone who added a time bomb and 
  10.           returned it to the dealer who shrink-wrapped it and resold it
  11.           to you, or some other virus is duplicating itself in memory.
  12.  
  13.           Why can't you be told when (and where in the software codes) 
  14.           the date is accessed and feed fake dates selectively if needed
  15.           so that the time bomb never explodes?  AND, since most virus 
  16.           infect by becoming memory resident, why can't you be warned 
  17.           when something becomes memory resident and disable it then?
  18.  
  19.                If you type "N" to avoid making something memory 
  20.                resident, reboot as soon as possible since your system 
  21.                memory is in an unstable state.
  22.  
  23.           Whether you unwittingly use a software infected by a time bomb 
  24.           or something tries to become memory resident, this pops up and 
  25.           either tells you the software code location which requested 
  26.           the date or warns that it wanted to become memory resident.  
  27.           If not allowing access to the date or allowing something to
  28.           become memory resident doesn't do anything, why let it?
  29.  
  30.                If a time bomb hides in a software, the correct date is
  31.                given to the selected software locations which you allow.
  32.  
  33.                Anti-virus softwares which look for known virus codes 
  34.                are useless, since the person who made one virus can
  35.                write a thousand variations, one of which is different
  36.                enough that the anti-virus software ignored it.
  37.  
  38.                This program does not depend on known virus patterns.
  39.  
  40.           The included TIMEBUG.COM will become memory resident if 
  41.           TIMEBOMB.EXE is not in memory or if you used -M parameter.
  42.  
  43.           The set up of this document is as follows:
  44.  
  45.           IN-LINE COMMAND PARAMETERS
  46.                HELP
  47.                RUNNING WITH DEFAULTS ONLY
  48.                     NORMAL PROCEDURE
  49.                TURNING ON/OFF TIMEBOMB.EXE
  50.                     TURNING THIS ON
  51.                     TURNING THIS OFF
  52.                PREVENTING UTILITIES FROM BECOMING MEMORY RESIDENT
  53.                CODE YES and CODE NO
  54.                     CODE YES LIST
  55.                     CODE NO LIST
  56.                          RUNNING WITH DIFFERENT LISTS
  57.                WHICH CODE LOCATIONS WERE YES AND NO?
  58.                FAKE DATE
  59.                DIRECT CONTROL
  60.           THIS DOES NOT WORK ON
  61.           HOW TIMEBOMB.EXE WORKS
  62.           CHAT IN A HAT
  63.           PROMPTS AND MESSAGES
  64.           DISCLAIMERS, INFO FOR SYSOPS ETC
  65.  
  66.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  67.                           IN-LINE COMMAND PARAMETERS
  68.           TIMEBOMB parameters<ntr>            explanations
  69.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  70.                                  HELP
  71.  
  72.           If you simply type
  73.  
  74.           TIMEBOMB<ntr>
  75.  
  76.           then you get the help page built into this program for quick 
  77.           reference so that you can avoid reading documents such as 
  78.           this.  Typing incorrect parameters also gives you similar 
  79.           helps, but are explained in this document as well.
  80.  
  81.           It's not essential that you read this document file, because 
  82.           when you type parameters with incorrect or missing values, 
  83.           they usually give detailed context sensitive help messages 
  84.           which will substitute for this, but skimming through this 
  85.           first will help you.
  86.  
  87.           The "<ntr>" is our way of saying <CR>, ^M, ^13, <ENTER>, 
  88.           carriage return, <ENTER> etc which all mean the same thing.
  89.           We also use <bks> for backspace, <esc> for the escape key, 
  90.           and "any key" to mean any function key, cursor key, letters, 
  91.           etc etc.  There is no one key with the word "any", but if we 
  92.           say "space bar" or "space key", we mean the big long key.
  93.  
  94.           There is no <tab>, control code or extended ascii in this 
  95.           file, should you print this to paper.  There is no form feed 
  96.           here, so if you use single sheets, you must add them yourself.
  97.           If you use a daisy wheel printer without the less than sign 
  98.           "<" or the greater than sign ">", change them to the left 
  99.           parenthesis "(" and right parenthesis ")" respectively.
  100.  
  101.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  102.                           RUNNING WITH DEFAULTS ONLY
  103.  
  104.           To run this with defaults, simply type
  105.  
  106.           TIMEBOMB RUN<ntr>
  107.  
  108.           Just the letter "r" in "run" will work also.  There is no 
  109.           difference between the capital letters and small letters, 
  110.           unless it is specifically stated otherwise.
  111.  
  112.           Any other command or text after the Run parameter is 
  113.           ignored.  The Run parameter is used when you run 
  114.           TIMEBOMB.EXE without setting any other parameter or for 
  115.           commenting purpose:
  116.  
  117.           TIMEBOMB R anything else here becomes comments <ntr>
  118.  
  119.           The defaults used are as follows:
  120.  
  121.           1) This program is in the ON state once you run it.  In other 
  122.              words, you will get a pop up warning whenever something 
  123.              requests the date.  Turn this OFF with the "OFF" parameter.
  124.  
  125.           2) This program will warn you if something becomes memory 
  126.              resident.  Turn this OFF with the -M parameter.
  127.  
  128.           2) Any request for the current date, including any date which 
  129.              appear at the DOS prompt causes the pop up to ask for your 
  130.              permission to allow it.
  131.  
  132.           3) When a Fake date is to be given, the date fed is year 1980,
  133.              January 1.
  134.  
  135.           4) This program becomes memory resident indirectly via DOS.
  136.  
  137.           If you set up DOS so that you can see the current date/time at 
  138.           the DOS prompt A>, B>, C> etc, then you must answer "Y" to the 
  139.           pop up menu which will pop up as soon as you run this program.
  140.  
  141.                Once you get the pop up, it tells you the date request 
  142.                location which can be fed to the Code Yes parameter so 
  143.                that the next time you do not have to answer with a "Y"
  144.                until you change to another DOS version.
  145.  
  146.           If you try to make this memory resident when there was already 
  147.           a first copy of this in memory, then this parameter will exit 
  148.           and set errorlevel = 1.
  149.  
  150.           Often some details are reworded in a later section to help 
  151.           you grasp the meaning better.  So rapidly scan through the 
  152.           document first, before concentrating on a section which 
  153.           interests you.
  154.  
  155.                               NORMAL PROCEDURE
  156.  
  157.           Normally, your AUTOEXEC.BAT will contain something like this
  158.  
  159.           softwares to become memory resident<ntr>
  160.           TIMEBOMB RUN<ntr>
  161.  
  162.           The first line will make your utilities memory resident 
  163.           without interference from TIMEBOMB.EXE.
  164.  
  165.           The next line will now turn TIMEBOMB.EXE ON to intercept 
  166.           anything further from becoming memory resident or requesting 
  167.           the current date.
  168.  
  169.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  170.                           TURNING ON/OFF TIMEBOMB.EXE
  171.  
  172.                                TURNING THIS ON
  173.  
  174.           If you run this program, the date request is automatically
  175.           turned ON.  For example, these will all run TIMEBOMB.EXE into
  176.           memory and turn it ON also:
  177.  
  178.           TIMEBOMB RUN<ntr>                          (1)
  179.           TIMEBOMB ON<ntr>                           (2)
  180.           TIMEBOMB F 1990 1 12<ntr>                  (3)
  181.           TIMEBOMB CY 3897<ntr>                      (4)
  182.  
  183.                (1) is the default and is equivalent to (2) when first 
  184.                making this memory resident.  But once a first copy of 
  185.                this program is in memory, (1) will tell you that there 
  186.                is already a first copy of this in memory and exit.   If 
  187.                there is a first copy of this in memory, then (2) will 
  188.                turn that first copy ON if it was turned OFF before.
  189.  
  190.                (3) will set the Fake date to year 1990, January 12.
  191.  
  192.                If you use DOS 5.0 and you set the date to display at the 
  193.                DOS level prompt, (4) allows it to get the correct date.
  194.  
  195.           The ON option is allowed when first making this program memory 
  196.           resident so that instead of the default Run option, you can 
  197.           use the above ON option to make this memory resident.
  198.  
  199.                If you try to run this into memory when there was already
  200.                a first copy of this in memory, then "ON" parameter does 
  201.                not set errorlevel = 0.
  202.  
  203.           If you set up DOS prompt (A>, B>, C> etc) so that the current 
  204.           date will also display, then you will get a short beep and a 
  205.           pop up message telling you the code location which requested 
  206.           the date and your permission to allow it access to the correct 
  207.           date.  Type "Y" (or "y", of course) so that DOS will get the 
  208.           correct date to display.  You can use the Code Yes parameter 
  209.           to avoid typing "Y" the next time.
  210.  
  211.                               TURNING THIS OFF
  212.  
  213.           If there was any reason why this program is not convenient or 
  214.           seems to make your software act strange, turn it OFF with
  215.  
  216.           TIMEBOMB OFF<ntr>
  217.  
  218.           This turns off the date request check, but not the checking 
  219.           for memory residency.  To turn OFF checking if anything will 
  220.           become memory resident, use the -M option.
  221.  
  222.           You can type only one "F", instead of "FF" as in
  223.  
  224.           TIMEBOMB OF<ntr>
  225.  
  226.           If you type
  227.  
  228.           TIMEBOMB OFX<ntr>
  229.  
  230.           then the "X" is accepted as the next parameter, but since 
  231.           there is no such parameter, this is an error:  The parameters 
  232.           up to and including the "X" will be displayed and a message 
  233.           telling you that this is an unknown parameter.
  234.  
  235.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  236.              PREVENTING UTILITIES FROM BECOMING MEMORY RESIDENT
  237.  
  238.           Many virus softwares duplicate themselves by becoming memory 
  239.           resident, so this will also tell you when something 
  240.           unexpectedly tries to make itself memory resident.
  241.  
  242.           When you used the RUN, ON and other parameters, the default 
  243.           was to check to see if anything became memory resident.  In 
  244.           other words, this was in effect
  245.  
  246.           TIMEBOMB +M<ntr>
  247.  
  248.           to prevent utilities from becoming memory resident without
  249.           your permission.
  250.  
  251.           Now, if anything wants to become memory resident, this will
  252.           pop up with a menu to ask you for your permission to allow it
  253.           to become memory resident.
  254.  
  255.                If you type "N" to prevent a utility from becoming memory 
  256.                resident, you should save any file in a virtual RAM disk 
  257.                and reboot as soon as you can:  The utility has probably 
  258.                changed interrupts values and other changes which has now 
  259.                left your computer's system memory in an unstable 
  260.                condition which can cause a lock up.
  261.  
  262.           TIMEBOMB -M<ntr>
  263.  
  264.           will now allow utilities to become memory resident without
  265.           asking for your permission.
  266.  
  267.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  268.                             CODE YES and CODE NO
  269.  
  270.                                 CODE YES LIST
  271.  
  272.           When you first ran this into memory and you set up DOS prompt 
  273.           to display the correct date, you had to type "Y" to allow DOS 
  274.           access to the correct date.  The next time, you can use the 
  275.           Code Yes parameter with the displayed code location so that 
  276.           this code will get the correct date.
  277.  
  278.           Assuming that you got the display
  279.           "Date request from 3897.  Allow it? (Y/N)"
  280.           then run TIMEBOMB.EXE into memory the next time by typing
  281.  
  282.           TIMEBOMB CY 3897<ntr>
  283.  
  284.           If you ran software ABC.EXE which display the date, you may 
  285.           have to type "Y" to allow it access to the date as well.  If 
  286.           your software caused TIMEBOMB.EXE to display code location 
  287.           0ab3 for example, type
  288.  
  289.           TIMEBOMB CY 3897 0ab3<ntr>
  290.  
  291.           to allow both access to the correct date.
  292.  
  293.                If you had to type "Y" more than once in your software, 
  294.                it means that your software is requesting the current 
  295.                date from two or more different locations.  Since this 
  296.                redundancy is a strange behavior, you may want to type 
  297.                "N" to the pop up menu prompt and see if your software 
  298.                behaves correctly or not.  If it behaves normally, there 
  299.                may be a time bomb hidden inside.  If it does not record 
  300.                or display the correct date in certain program segments, 
  301.                then the software was simply not designed modularly.
  302.  
  303.           You must type four numbers and/or letters which displayed on 
  304.           the pop up menu for Code Yes parameter, even if the first 
  305.           character was a zero as in "0ab3".  These are not allowed:
  306.  
  307.           TIMEBOMB CY ab3<ntr>                       (1)
  308.           TIMEBOMB CY 3897ab3<ntr>                   (2)
  309.           TIMEBOMB CY 3897 CY 0ab3<ntr>              (3)
  310.           TIMEBOMBCY 3897<ntr>                       (4)
  311.           TIMEBOMB CY<ntr>                           (5)
  312.  
  313.                (1) is not allowed because you typed only three numbers/
  314.                letters, instead of the required four.
  315.  
  316.                With (2), you can avoid any space or tab between the 
  317.                first value "3897" and the next, but the next one had 
  318.                only three characters "ab3", instead of four.
  319.  
  320.                (3) may seem fine, but this defines the Code Yes list to 
  321.                3897 and then redefine it to 0ab3.
  322.  
  323.                (4) will be accepted by DOS, since DOS only understand 
  324.                eight characters, but DOS will also truncate every 
  325.                character after the eighth character "B" of "TIMEBOMB"<--
  326.                so that the "CY" is not sent to this program.
  327.  
  328.                (5) is not allowed because you did not specify what Code 
  329.                Yes values you want to use.
  330.  
  331.                     All these error types are checked and appropriate 
  332.                     error messages given to you.
  333.  
  334.           The following are allowed:
  335.  
  336.           TIMEBOMB CY 38970ab3<ntr>                  (1)
  337.           TIMEBOMB CY3897 0AB3<ntr>                  (2)
  338.  
  339.                (1) is allowed because you do not have to separate the 
  340.                Code Yes values by any space or tab.  Since there is a 
  341.                strict requirement that you must type four characters, 
  342.                the program can separate them apart.  This is useful only 
  343.                if you're running TIMEBOMB.EXE with so many parameters 
  344.                that you cannot fit them into one line without this.
  345.  
  346.                (2) is allowed.  There is no need to separate the CY 
  347.                parameter with its Code values.  You can type letters in 
  348.                capital or in small letters.
  349.  
  350.           To clear the list, enter four zeros "0000" as in
  351.  
  352.           TIMEBOMB CY 0000<ntr>
  353.  
  354.                                CODE NO LIST
  355.  
  356.           If you typed "N" to the pop up menu prompt, those Code values 
  357.           may be run in the same manner as the Code Yes values:
  358.  
  359.           TIMEBOMB CN 02ab<ntr>
  360.           TIMEBOMB CN 2af9 8afe<ntr>
  361.  
  362.           To clear the list, enter "0000" as in
  363.  
  364.           TIMEBOMB CN 0000<ntr>
  365.  
  366.                         RUNNING WITH DIFFERENT LISTS
  367.  
  368.           Although up to 32 CY and CN values may be used at the same 
  369.           time, chances are good that you do not have to use so many 
  370.           within one software anyway.  In that case, you can make simple 
  371.           batch files to run different softwares as follows, assuming 
  372.           that software A.EXE requires "CY 03ae" and B.COM requires
  373.           "CY 0fa3 ff97 CN a52d".  DOS requires "CY 3897".
  374.  
  375.           example A
  376.  
  377.           TIMEBOMB CY 03ae<ntr>                      batch file XX.BAT
  378.           A.EXE<ntr>
  379.           TIMEBOMB CY 3897<ntr>
  380.  
  381.           With XX.BAT, before running A.EXE, TIMEBOMB.EXE turns OFF the 
  382.           "CY 3897" required for DOS and allows the date request from 
  383.           A.EXE at its code location 03ae.  Once you exit A.EXE, the 
  384.           date request is set to DOS again.
  385.  
  386.           example B
  387.  
  388.           TIMEBOMB CY 0fa3 ff97 3897 CN a52d<ntr>    batch file YY.BAT
  389.           B.COM<ntr>
  390.           TIMEBOMB CY 3897<ntr>
  391.  
  392.           With YY.BAT, the B.COM's request for date at its program code 
  393.           location "0fa3" and "ff97" are allowed, as does the DOS date 
  394.           request, but you didn't trust the date request from B.COM's 
  395.           code location "a52d" whose absence did not affect anything 
  396.           which you did, so you decided not to let it get the correct 
  397.           current date.
  398.  
  399.                Having the DOS code location in the CY list like this is 
  400.                useful if your B.COM temporarily lets you go back to DOS 
  401.                to do something else and go back to your software by 
  402.                typing "EXIT<ntr>".
  403.  
  404.                Without the "3897" in the CY list, as soon as you get 
  405.                back to DOS with date display, this will cause 
  406.                TIMEBOMB.EXE to pop up its menu and asks you if you want 
  407.                this to get the correct current date or not.
  408.  
  409.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  410.                     WHICH CODE LOCATIONS WERE YES AND NO?
  411.  
  412.           After you type Y/N to allowing date request from one location 
  413.           within your software, the pop up message remains on screen so 
  414.           that you can write down the code location value on a piece of 
  415.           paper, but you don't need to if you type
  416.  
  417.           TIMEBOMB ?<ntr>
  418.  
  419.           This will tell you the list of Code Yes and Code No locations 
  420.           to which you typed Y/N.  This does not contain the listing to 
  421.           which you typed <esc>, since that sends the fake date to your 
  422.           software just once on that occasion so that you can see what 
  423.           happens, if anything.
  424.  
  425.           Up to 32 CY and 32 CN location values will display.
  426.  
  427.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  428.                                   FAKE DATE
  429.  
  430.           When you type "N" at the pop up prompt or add the code value 
  431.           with the CN parameter, the default is to send this code 
  432.           segment of your software(s) the year 1980, January 1.
  433.  
  434.           If you like, you can set it for (for example) 1992, March 1
  435.           by typing
  436.  
  437.           TIMEBOMB F 1992 3 1<ntr>
  438.  
  439.           You must separate the year, month and the day of the month by 
  440.           one space or tab, preferably a space.  The year must be 
  441.           between 1980 to 2099.  The month value must be between 1 to 
  442.           12.  The day of the month value must be 1 to 31.
  443.  
  444.                1 = January  5 = May    9  = September
  445.                2 = February 6 = June   10 = October
  446.                3 = March    7 = July   11 = November
  447.                4 = April    8 = August 12 = December
  448.  
  449.           There is no check done if you set for a month which does not 
  450.           have 31 days or even 30 days (February).  Consequently, there 
  451.           is no check done for leap year value either.
  452.  
  453.           These following are allowed
  454.  
  455.           TIMEBOMB F1992 1 2<ntr>                    (1)
  456.           TIMEBOMB F 1992   1     2  <ntr>           (2)
  457.  
  458.                (1) is allowed because you do not have to have a space or 
  459.                tab separating the Fake parameter from its values.
  460.  
  461.                (2) is allowed because the minimum requirement is one 
  462.                space or tab separating the values, but more than one is 
  463.                allowed.
  464.  
  465.           These following are not allowed
  466.  
  467.           TIMEBOMB F 1908<ntr>                       (1)
  468.           TIMEBOMB F 198913<ntr>                     (2)
  469.           TIMEBOMB F 1989 13 1<ntr> ................ (3)
  470.           TIMEBOMB F 95<ntr>                         (4)
  471.           TIMEBOMB F 123456789<ntr>                  (5)
  472.           TIMEBOMB F 1992 1 32<ntr>                  (6)
  473.           TIMEBOMB F 1989 1 RUN<ntr> ............... (7)
  474.  
  475.                (1) is not allowed because this year is not in the range 
  476.                of 1980 - 2099.  If it was within the range, it is still 
  477.                not allowed because there is no month or day of the month 
  478.                following it.
  479.  
  480.                (2) is not allowed because this does not separate the 
  481.                year, month and the day of the month by one or more 
  482.                spaces.
  483.  
  484.                (3) specifies a 13th month which is outside the range of 
  485.                1 to 12.
  486.  
  487.                (4) specifies the year 95, which is not allowed, since it 
  488.                could be 1995 or 2095.  (if this sounds too finicky, you 
  489.                can always ask for an update which corrects it)
  490.  
  491.                (5) is too confusing, but it also lacks the month and 
  492.                day of the month.
  493.  
  494.                (6) specifies a day of the month outside the range of 1
  495.                to 31.
  496.  
  497.                (7) also lacks a day of the month.
  498.  
  499.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  500.                                DIRECT CONTROL
  501.  
  502.           Normally, TIMEBOMB.EXE becomes memory resident with the help 
  503.           of DOS to take over control.  If you think that this is not 
  504.           allowing the pop up to appear (in other words, it's not 
  505.           running), try making it take over control DiReCtly by
  506.  
  507.           TIMEBOMB DRC<ntr>
  508.  
  509.           This can only be used when first making TIMEBOMB.EXE memory 
  510.           resident, not later when there is already a first copy of 
  511.           TIMEBOMB.EXE in memory.
  512.  
  513.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  514.                             HOW TIMEBOMB.EXE WORKS
  515.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  516.  
  517.           The method of date access is not discussed since it provides
  518.           help to virus makers.  A test virus which just occupy system 
  519.           memory is included.  It will run and use up your memory if 
  520.           TIMEBOMB.EXE is not in memory or if -M parameter was used.
  521.           Otherwise, you will get a message asking you if you want to 
  522.           make this memory resident or not.
  523.  
  524.           Run TIMEBOMB.EXE with the following
  525.  
  526.           TIMEBOMB RUN<ntr>
  527.  
  528.           TIMEBOMB.EXE will now check if anything else becomes memory 
  529.           resident or requests the current date.  Turn OFF checking 
  530.           memory residency with "-M" and date request with "OFF".
  531.  
  532.           If anything tries either, then type "Y" to the prompt which is 
  533.           accompanied by a short beep to allow it.  Type "N" to prevent 
  534.           it from becoming memory resident or to prevent it from getting 
  535.           the correct date.
  536.  
  537.                If you type "N" to becoming memory resident, reboot by 
  538.                turning off your computer as soon as you can.  Your 
  539.                system memory is now in an unstable state because the 
  540.                virus has prepared itself to become memory resident by 
  541.                writing unknown things into your system memory.
  542.  
  543.           If you set up DOS to display the current date, you must type 
  544.           "Y" at the pop up prompt.  Note the strange code location 
  545.           value in the prompt to a piece of paper.  If the value was 
  546.           "29ca", the next time you turn on your computer, instead of 
  547.           the default RUN parameter, use the Code Yes parameter as
  548.  
  549.           TIMEBOMB CY 29ca<ntr>
  550.  
  551.           Now the current date will display without a pop up prompt 
  552.           asking your permission to do so.  When you change to another 
  553.           version of DOS, you must use the new value displayed.
  554.  
  555.           When you run a software which displays the current date, it 
  556.           will cause this program to pop up its prompt again, asking for 
  557.           your permission to give it the correct date.  Type "Y" and add 
  558.           it to the Code Yes list the next time.
  559.  
  560.                A sloppy software may request the date from two or more 
  561.                code locations, but normally, you should not expect to 
  562.                get the pop up again.
  563.  
  564.                If your software requests the date from two or more 
  565.                locations or a software which does not display the 
  566.                current date requests it, try typing <esc> to see what 
  567.                happens.  With <esc>, the Fake date is given to see if 
  568.                your software behaves any differently.  If this same 
  569.                location asks for the date again, the pop up will appear 
  570.                again as well.
  571.  
  572.           If you load your memory resident utilities in different order, 
  573.           this will not affect the CY values.
  574.  
  575.           This program will work on most virus softwares which either 
  576.           tried to run on a given date or duplicate itself by becoming 
  577.           memory resident because a virus has to be small.
  578.  
  579.           Perhaps you would like this incorporated into JLOCK.EXE or 
  580.           some other program in the series?  JLOCK.EXE can prevent each
  581.           listed file from being renamed, copied, deleted etc.
  582.  
  583.           Since you're probably the only person in the world using this 
  584.           program, chances are that no one else benefits from this.  The 
  585.           rest of the people just get surprised on Friday the 13, 
  586.           Christmas, New Year, Einstein's birthday etc.
  587.  
  588.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  589.                                CHAT in a HAT
  590.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  591.  
  592.           It is always the top politician who makes or breaks his
  593.           country, not its citizens who only follow what he said:
  594.  
  595.           Some J politicians said that US workers are lazy and a third
  596.           of its workers can't read or write.  I don't know where this
  597.           data came from, but it's said that here in Canada, a quarter
  598.           of our CITY folks can't read or write (I DIDN'T say "ALSO").
  599.  
  600.           The US managers are criticized for earning millions while
  601.           firing its employees by the millions (thou top J managers
  602.           who hire, earn only half a million).  If the J politician
  603.           had substituted "manager" for "worker" what would happen?
  604.  
  605.           It is always the top management which makes, or breaks its
  606.           company, not its employees who only follow what they said.
  607.           Think about it, whether you earn millions, or nil like us.
  608.  
  609.           Nine 98 pound weaklings can beat up one he-man anytime:
  610.           IBM knew in 1981 that its future was in trouble, and in
  611.           1991, it bled red.  It was mostly due to the recession,
  612.           but also because more countries thought J computers are
  613.           more reliable, faster and cheaper and bought them.  IBM
  614.           took steps since 1981 to change its destiny, but did so
  615.           by focusing on small groups, thinking that the U.S. has
  616.           small groups of super-geniuses and that the rest of the
  617.           population are not worth bothering with.  In J, there's
  618.           no focus on small groups, but every single child get to
  619.           see animations and comic books depicting robots and the
  620.           associated super computers. (some of them became famous
  621.           in Quebec in circa 1980) Some of those J children said,
  622.           "I'm going to build them!" before entering universities
  623.           in 1981.  Their friends laughed, but did IBM laugh too?
  624.           Can you say who'll be crying and haemorrhaging in 2002,
  625.           and who'll be laughing and calling you lazy and stupid?
  626.           (It's relative:  Kor/Tai may call US & J lazy by 2102.)
  627.  
  628.           According to one US mag, J contributed $13B and minesweepers
  629.           to the Gulf:  Kor, $50m.  Tai, 0, though it had almost $100B
  630.           cash.  The same magazine criticized J's non-participation in
  631.           the Gulf but silent on K & T.  Can you tell friend from foe?
  632.           Twenty 98 pound weaklings can beat up US & J he-men anytime.
  633.  
  634.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  635.                              PROMPTS AND MESSAGES
  636.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  637.  
  638.  
  639.           =-=-=
  640.           Unknown parameter on the command line
  641.           =-=-=
  642.  
  643.           The parameter lists up till the one in question is displayed 
  644.           prior to this message.
  645.  
  646.           Something not recognized was found on the line when you ran 
  647.           the program.  If you ran this program from a batch file,
  648.           error messages are followed by errorlevel = 1 so that you
  649.           can have your batch file take appropriate actions.
  650.  
  651.           The list of parameters will be listed up to the erroneous 
  652.           parameter so that you know which one was incorrect.
  653.  
  654.           =-=-=
  655.           You don't have to do it, TIMEBOMB.EXE is already in memory
  656.           =-=-=
  657.  
  658.           You tried to RUN this program when a copy of this was 
  659.           already in memory.
  660.  
  661.           If you only want to change the parameters of the first copy of 
  662.           this program in memory, do not use the RUN parameter.  Simply 
  663.           typing the required new parameters will cause the second copy 
  664.           of this program which you just typed to send the parameters to 
  665.           the first copy already in memory.
  666.  
  667.           =-=-=
  668.           DOS 2 or above needed.
  669.           =-=-=
  670.  
  671.           You tried to use DOS 1.0 or DOS 1.1 to run this program. 
  672.           This message should not appear, since DOS 2.0 and above has 
  673.           been used for almost ten years by the time you're reading this 
  674.           document.
  675.  
  676.           =-=-=
  677.           There is a first copy of TIMEBOMB.EXE in memory, but the
  678.           version number is not the same as this one.  Aborting.
  679.           =-=-=
  680.  
  681.           You tried to change the settings of the first copy of 
  682.           TIMEBOMB.EXE in memory using the second copy running now, but 
  683.           the two were not the same version.  The second copy will abort 
  684.           without doing anything to prevent corrupting the first copy in 
  685.           memory.
  686.  
  687.           Please delete the older one and use only the newer version.
  688.  
  689.  
  690.           =-=-=
  691.           Date request from ____ .  Allow it? (Y/N)
  692.           =-=-=
  693.  
  694.           A software requested the current date.  The "____" is the code 
  695.           location in hexadecimal within the software which requested 
  696.           the current date.  This value will be used in either the Code 
  697.           Yes/No list, depending on whether you type "Y" or "N" at this 
  698.           prompt.
  699.  
  700.           If you type "Y", then this code location goes into the CY list 
  701.           so that the next time this code location within the software 
  702.           requests the current date, it will be allowed to get it 
  703.           without bothering you with this prompt again.
  704.  
  705.           If you type "N", then this code location goes into the CN list 
  706.           so that the next time this code location within the software 
  707.           requests the current date, it will be given a Fake date 
  708.           without bothering you with this prompt again.
  709.  
  710.           If you type <esc>, then a fake date is given just once this 
  711.           time around so that you can see if your software behaves as it 
  712.           should or not.  If your software is not supposed to show the 
  713.           date and you get this prompt, it is a good idea to try <esc> 
  714.           to see if it does anything incorrectly.
  715.  
  716.           You don't have to write down the hexadecimal value, since 
  717.           typing "?" parameter will tell you the values.
  718.  
  719.           The values are in hexadecimal rather than in decimal because 
  720.           DEBUG.COM requires hexadecimal values:  If you have some 
  721.           knowledge on how to use DEBUG.COM, you can try looking in a 
  722.           software by using this value to see if it looks alright.
  723.  
  724.                You cannot use this to check with DEBUG.COM if the 
  725.                software in question relocates the code segment register, 
  726.                since the code segment register which requested the date
  727.                is not displayed.
  728.  
  729.           Normally, softwares which display hexadecimals display the 
  730.           letters in capitals, but this program will display them in 
  731.           small letters since bee "B" is easy to mistake for eight "8".
  732.  
  733.           =-=-=
  734.           Allow MEMORY RESIDENCY? (Y/N)
  735.           =-=-=
  736.  
  737.           A software tried to become memory resident so TIMEBOMB.EXE is 
  738.           asking for your permission to allow it to become memory 
  739.           resident.
  740.  
  741.           Type "Y" if you know that you just ran a software which is 
  742.           supposed to become memory resident.
  743.  
  744.           Type "N" if you didn't know that something was about to become 
  745.           memory resident.
  746.  
  747.                If you type "N" to prevent a utility from becoming memory 
  748.                resident, you should save any file in a virtual RAM disk 
  749.                and reboot as soon as you can:  The utility has probably 
  750.                left your computer's system memory in an unstable 
  751.                condition which can cause a lock up.
  752.  
  753.           TIMEBOMB +M<ntr>
  754.  
  755.           Normally, your AUTOEXEC.BAT will contain something like this
  756.  
  757.           softwares to become memory resident<ntr>
  758.           TIMEBOMB RUN<ntr>
  759.  
  760.           The first line will make your utilities memory resident 
  761.           without interference from TIMEBOMB.EXE.
  762.  
  763.           The next line will now turn TIMEBOMB.EXE ON to intercept 
  764.           anything further from becoming memory resident or requesting 
  765.           the current date.
  766.  
  767.  
  768.  
  769.  
  770.           Note that the following messages are very explanatory and 
  771.           often require no explanation, but brief explanations are 
  772.           included since these documents often look like a dozen people 
  773.           in a dozen cities wrote separate sections. (Programmers are
  774.           often accused of writing cryptic documents:  It's because
  775.           every change in the program requires a change in the document
  776.           as well, resulting in patched up documentation.  Either that, 
  777.           or three dozen people in a dozen cities wrote this program.)
  778.  
  779.                The idea of using explained examples come from Digital 
  780.                Equipment Corp. manuals for the PDP/VAX minicomputers, 
  781.                but the extensive nature of error messages is our idea, 
  782.                after reading about computer operators who killed some 
  783.                people because they ignored cryptic number error 
  784.                messages without words to explain them.
  785.  
  786.           These error messages are meant to be context sensitive help 
  787.           messages so that you can avoid referring back to this 
  788.           document everytime you forgot to do something.
  789.  
  790.           They are listed here so that you don't have to try to
  791.           recreate all the error conditions in order to see what types
  792.           of errors are generated by this program.  They are in order of 
  793.           likely to occur, rather than alphabetic order, since your 
  794.           editor or word processor can scan this document faster than 
  795.           you can scan an alphabetic list by eye.
  796.  
  797.           =-=-=
  798.           The changes were made.  Bye.
  799.           =-=-=
  800.  
  801.           If you already have a first copy of TIMEBOMB.EXE in memory, 
  802.           then when you run the second copy, the parameters which you 
  803.           typed here will be sent to the first copy already in memory 
  804.           and will give you this message to tell you that there was no 
  805.           error and that the first copy was changed as required.
  806.  
  807.           =-=-=
  808.             I was expecting to find four numbers/letters, but
  809.           was missing it.  code values such as 0ab1 af0f are correct
  810.           because they consist of "0" - "9" and "a" - "f" and there
  811.           four of them.
  812.           " ab1" is INcorrect because there are only three.
  813.           "af0g" is INcorrect because "g" is beyond the range.
  814.           "0ab1af0f" is correct and is taken as "0ab1" and "af0f".
  815.           "0ab1af0" is INcorrect since it is "0ab1" and "af0".
  816.           "0Ab1A" is correct because you can use capital/small letter.
  817.           "0ab1r" is correct:  It is taken as "0ab1" and Run.
  818.           =-=-=
  819.  
  820.           You typed the Code Yes or the Code No parameter for a list of 
  821.           software code locations for which you want to give the correct 
  822.           or the fake dates.
  823.  
  824.           For some reason, you forgot to type four numbers/letters 
  825.           required for each code location.
  826.  
  827.           Correct and incorrect examples are provided so that you can 
  828.           tell what type of values should have been typed and how you's 
  829.           compare to them.
  830.  
  831.           =-=-=
  832.             I was expecting the Code parameter to be followed by
  833.           either "Y" or "N" for Codes allowed Yes/No.
  834.           "CY" should be followed by the four numbers/letters which
  835.           you saw on the pop up asking your permission and to which
  836.           you responded with a "Y".  For example,
  837.           TIMEBOMB CY 29ca ab12 23fe<ntr>
  838.           TIMEBOMB CY29CA  ab1223fe<ntr>
  839.           "CN" should be followed by the four numbers/letters which
  840.           you saw on the pop up asking your permission and to which
  841.           you responded with a "N".  For example,
  842.           TIMEBOMB CN 231a 34a9 25da ba2c<ntr>
  843.           TIMEBOMB CN231a  34A9 25DabA2c<ntr>
  844.           "TIMEBOMB CN 0000<ntr>" turns CN OFF.  Similar for CY.
  845.             Once the software code values are in the Yes list, those
  846.           locations asking for the current date gets the correct date.
  847.             Once the software code values are in the No list, those
  848.           locations asking for the current date gets a Fake date.
  849.             You will still get the pop up for your permission if other
  850.           locations ask for the current date.
  851.           =-=-=
  852.  
  853.           You typed the Code parameter, but did not follow it with 
  854.           either the Yes or the No as in CY/CN to include a list of 
  855.           allowed code locations and not allowed code locations.
  856.  
  857.           There must be no space or tab between the "C" and the "Y" or 
  858.           the "N".
  859.  
  860.           =-=-=
  861.           I was expecting a list of hexadecimal numbers consisting
  862.           of "0" to "9" and "a" to "f" or "A" to "F" as code locations
  863.           from your software(s) which access the current date as in
  864.           TIMEBOMB CY 29ca 25da<ntr>
  865.           These locations are allowed to access the true current date.
  866.           =-=-=
  867.  
  868.           You used the Code Yes parameter but was not followed by 
  869.           hexadecimal code values.
  870.  
  871.           =-=-=
  872.           I was expecting a list of hexadecimal numbers consisting
  873.           of "0" to "9" and "a" to "f" or "A" to "F" as code locations
  874.           from your software(s) which access the current date as in
  875.           TIMEBOMB CN 29ca 25da<ntr>
  876.           These locations are NOT allowed to access true current date.
  877.           =-=-=
  878.  
  879.           You used the Code No parameter but was not followed by 
  880.           hexadecimal code values.
  881.  
  882.           =-=-=
  883.             You already used a Code Yes parameter.
  884.             To define multiple code values, simply enter them as in
  885.           TIMEBOMB CY 0123 4567 89ab cdef<ntr>
  886.             You must enter four characters per code value, even if
  887.           it begins with a zero "0".
  888.           =-=-=
  889.  
  890.           You tried to use more than one Code Yes parameter, even though 
  891.           one CY will allow as many code values as you like.
  892.  
  893.           =-=-=
  894.             You already used a Code No parameter.
  895.             To define multiple code values, simply enter them as in
  896.           TIMEBOMB CN 0123 4567 89ab cdef<ntr>
  897.             You must enter four characters per code value, even if
  898.           it begins with a zero "0".
  899.           =-=-=
  900.  
  901.           You tried to use more than one Code No parameter, even though 
  902.           one CN will allow as many code values as you like.
  903.  
  904.           =-=-=
  905.             After the "+" option, I was expecting to find the letter
  906.           "M" to turn ON (+) checking if anything becomes memory
  907.           resident.  Or "+ST" to use internal stack.
  908.             With -M, TIMEBOMB.EXE will allow utilities to become
  909.           memory resident WITHOUT your permission.
  910.           =-=-=
  911.  
  912.           You used the plus option "+", but did not follow it with the 
  913.           required M option to check if anything wants to become memory 
  914.           resident, or "ST" to use internal stack.
  915.  
  916.           The use of internal stack by typing "+ST" is not essential 
  917.           since this program does not make extensive use, but if you do 
  918.           get some trouble at unexpected times, try it and see if it 
  919.           makes any difference.
  920.  
  921.                If a software was about to become memory resident and 
  922.                this program asked you whether to allow it or not, to 
  923.                which you answered with a "N" to avoid making it memory 
  924.                resident, reboot as soon as you can because you system 
  925.                memory is not in a stable condition.
  926.  
  927.           There must be no space or tab between "+" and "M" or "ST".
  928.  
  929.           =-=-=
  930.             After the "-" option, I was expecting to find the letter
  931.           "M" to turn OFF (-) checkinf if anything becomes memory
  932.           resident.  Or "-ST" to use available stack.
  933.             With +M, TIMEBOMB.EXE will NOT allow small utilities to be
  934.           memory resident unless you type "Y" at the pop up menu.
  935.           =-=-=
  936.  
  937.           You used the plus option "-", but did not follow it with the 
  938.           required M option to turn OFF checking to see if anything 
  939.           became resident, or "ST" to use available stack (default).
  940.  
  941.           If you get a pop up message prompt to allow a utility to 
  942.           become memory resident and you type "N", reboot as soon as you 
  943.           can, since the utility has made changes to the system memory 
  944.           which has left it in an unstable condition.  This program (or 
  945.           at least this version) cannot correct this situation.
  946.  
  947.           There must be no space or tab between "-" and "M" or "ST".
  948.  
  949.           =-=-=
  950.           There is no first copy of TIMEBOMB.EXE in memory.
  951.           I cannot give you the code values.
  952.           =-=-=
  953.  
  954.           You used the "?" option to find what code locations you typed 
  955.           Y/N on the pop up prompt, but you did not have a first copy of 
  956.           TIMEBOMB.EXE in memory yet.
  957.  
  958.           =-=-=
  959.             The Fake date parameter must be followed by the date in
  960.           order of year, month and day as in the following:
  961.           TIMEBOMB F 1993 1 20<ntr>
  962.           for Fake date set to year 1993 January 20.
  963.            (default is 1980 January 1)
  964.             The year must be between 1980 to 2099.
  965.             The month must be between 1 to 12 for January to December.
  966.             The day must be between 1 to 31. (no check done if you
  967.           try to set for February 31 (2 31) and other nonsense dates.
  968.             You must separate the "1993", "1" and "20" by one space,
  969.           not connected as in "1980112", "19801 12" or "1980 112"
  970.           =-=-=
  971.  
  972.           You typed only the Fake parameter without following it with 
  973.           the required year, month and the day of the month. (the last 
  974.           has to be called the "day of the month", because there is also 
  975.           a "day of the week" which this program (this version at least)
  976.           does not alter.
  977.  
  978.           You will also get this error message if you typed the year, 
  979.           but it was not within the correct range of 1980 to 2099.
  980.  
  981.           Chances are 100% that you will not be using this program 
  982.           anywhere near the year 2099, but at least you can, if you 
  983.           descendants want to see what their great grandfather or 
  984.           grandmother used to do.
  985.  
  986.           =-=-=
  987.           I was expecting to find either a space or a tab after this.
  988.           =-=-=
  989.  
  990.           The three values must be separated by at least one space or 
  991.           tab.  One space is preferred, though you can use several 
  992.           spaces if there is a need for it.
  993.  
  994.           =-=-=
  995.             I was expecting to find the month value 1 to 12 for
  996.           January to December here after the year value.
  997.           January = 1, February = 2, March = 3, April = 4, May = 5
  998.           June = 6, July = 7, August = 8, September = 9, October = 10
  999.           November = 11 and December = 12
  1000.           Type "TIMEBOMB F<ntr>" for general help on Fake date.
  1001.           =-=-=
  1002.  
  1003.           You followed the Fake parameter with the correct year, but it
  1004.           was not followed by the month or the correct month value.
  1005.  
  1006.           =-=-=
  1007.             I was expecting to find the day value 1 to 31 after
  1008.           the year and the month values.
  1009.           Type "TIMEBOMB F<ntr>" for general help.
  1010.           =-=-=
  1011.  
  1012.           You had the year and the month value for the Fake parameter, 
  1013.           but you did not have a correct day of the month value.
  1014.  
  1015.           =-=-=
  1016.             I cannot use the DiReCt mode to become memory resident
  1017.           because there is already a copy of this which became memory
  1018.           resident.  Please reboot your computer to use this.
  1019.           =-=-=
  1020.  
  1021.           You experienced some difficulty with the regular method to 
  1022.           make this memory resident, so you tried to use the DiReCt 
  1023.           method to make this memory resident, but there was already a 
  1024.           first copy of this program in memory using the inDiReCt 
  1025.           method.
  1026.  
  1027.           You must reboot your computer to try using the DiReCt method.
  1028.  
  1029.           =-=-=
  1030.             I was expecting to find "DRC" to make TIMEBOMB.EXE memory
  1031.           resident by taking over the interrupts DiReCtly, by-passing
  1032.           DOS interrupt handling routine.
  1033.           =-=-=
  1034.  
  1035.           You typed one of the following
  1036.  
  1037.           TIMEBOMB D<ntr>
  1038.           TIMEBOMB DR<ntr>
  1039.           TIMEBOMB DX<ntr>
  1040.           TIMEBOMB DRX<ntr>
  1041.  
  1042.           where "X" is anything but the required letters.
  1043.  
  1044.           The need to type three letters prevents you from doing this 
  1045.           accidentally.
  1046.  
  1047.           =-=-=
  1048.           I was expecting either the parameter "ON" or "OFF"
  1049.           This is not either of them.
  1050.           =-=-=
  1051.  
  1052.           You typed one of the following
  1053.  
  1054.           TIMEBOMB O<ntr>
  1055.           TIMEBOMB OX<ntr>
  1056.  
  1057.           where "X" is anything but the letter "N" or "F" for "ON" or 
  1058.           "OFF".
  1059.  
  1060.           =-=-=
  1061.           Internal stack is now ON.
  1062.           =-=-=
  1063.  
  1064.           The internal stack is used now, instead of relying on whatever 
  1065.           stack space was available before.
  1066.  
  1067.           =-=-=
  1068.           Internal stack is now OFF.
  1069.           =-=-=
  1070.  
  1071.           Now, the available stack is used.  On DOS 3 and above, there 
  1072.           is a set of stack spaces allocated for such a purpose, so 
  1073.           there is usually not much need for these features.
  1074.  
  1075.  
  1076.  
  1077.           Hopefully all the important messages were covered.  Now for 
  1078.           the information to users:
  1079.  
  1080.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1081.                          DISCLAIMERS, INFO FOR SYSOPS ETC
  1082.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1083.  
  1084.           All products and names mentioned are Trademarks or
  1085.           Registered Trademarks of their respective corporations or
  1086.           companies.  That includes my group or any other group's
  1087.           programs, of course.  Some products may have patent 
  1088.           protections as well.
  1089.  
  1090.           All enclosed programs, documents and other files are
  1091.           provided AS IS, without any warranty, expressed or implied,
  1092.           including but not limited to fitness for a particular
  1093.           purpose.
  1094.  
  1095.           A contribution of $10 (Cdn$10 if you're from Canada and 
  1096.           US$10 if from the US and others) is appreciated, or $20 for
  1097.           an update as it becomes available.  Default diskette sent 
  1098.           to you is 5-1/4" double-sided 360kb diskette unless you 
  1099.           specify otherwise.  Shipping and handling are included.
  1100.  
  1101.                Please indicate what version and any edition date you
  1102.                have:  Sometimes, the same version number & date is
  1103.                kept, but the edition month/year differs.
  1104.  
  1105.           In hard times, anything perceived as having resell value is
  1106.           a target for theft, including diskettes in nice containers:
  1107.           While disk mailers cost $2+tax etc, they're easy to tamper,
  1108.           as we've noticed, so if you got your diskette in cardboard,
  1109.           it was for your security, not our cheapness.  But if you do
  1110.           insist on a mailer, we'll comply.  (but you were warned...)
  1111.  
  1112.           NAME OF THE PROGRAM:          TIMEBOMB.EXE $10-$20
  1113.  
  1114.           PURPOSE OF THE PROGRAM:
  1115.           Prevent possible time bombs or time bombs hiding in software
  1116.           from exploding on a certain date by telling you when a 
  1117.           software requests the date and lets you selectively turn
  1118.           on/off date access by various code locations within a 
  1119.           software.  AND tells you when something is about to become
  1120.           memory resident so that you can avoid virus multiplying.
  1121.  
  1122.           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1123.  
  1124.           c/o  Dr. M. Sawada & Mr. H. Sawada & Assoc.
  1125.                P.O. Box 956       
  1126.                Outremont, Quebec  
  1127.                Canada  H2V 4R8    
  1128.  
  1129.           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1130.  
  1131.